package org.dreamwork.cai.io;

import org.dreamwork.cai.srf.MethodInfo;
import org.dreamwork.cai.srf.ServiceRouteItem;

import java.rmi.RemoteException;

/**
 * 远程服务在本地的存根.
 *
 * <p>通过这个接口可以调用到远程服务</p>
 */
public interface IRemoteServiceStub {
    /**
     * 调用远程服务
     * @param sri  服务路由表项
     * @param info 方法映射描述
     * @param args 方法参数
     * @return 远程方法返回的结果
     * @throws RemoteException 任何远程异常
     */
    Object invoke (ServiceRouteItem sri, MethodInfo info, Object... args) throws RemoteException;
}
